package cn.wolfcode.luowowo.member.mapper;

import cn.wolfcode.luowowo.member.domain.UserInfo;
import cn.wolfcode.luowowo.member.domain.UserMessage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserInfoMapper {
    int deleteByPrimaryKey(Long id);

    int insert(UserInfo record);

    UserInfo selectByPrimaryKey(Long id);

    List<UserInfo> selectAll();

    int updateByPrimaryKey(UserInfo record);

    int selectByPhone(String phone);

    UserInfo selectByUsernameAndPassword(@Param("username") String username,@Param("password") String password);

    /**
     * 修改密码
     * @param phone
     * @param newpassword
     */
    void updatepassword(@Param("phone") String phone, @Param("newpassword") String newpassword);

    /**
     * 验证原手机号
     * @param phone
     * @return
     */
    UserInfo verityOldPhone(String phone);

    /**
     * 修改手机号
     * @param id
     * @param phone
     */
    void updatephone(@Param("id") Long id, @Param("phone") String phone);

    /**
     * 修改用户状态
     * @param id
     */
    void updatestate(@Param("id") Long id, @Param("state") int state);

    /**
     * 搜索指定用户名的用户
     * @param name
     * @return
     */
    UserInfo searchUser(String name);

    /**
     * 查询黑名单信息
     * @param id
     * @return
     */
    List<UserInfo> selectbreakUser(Long id);

    /**
     * 查看该黑名单用户是否存在
     *
     * @param bid
     * @param uid
     * @return
     */
    UserInfo selectbreakuserByUid(@Param("bid") Long bid, @Param("uid") Long uid);

    /**
     * 设置黑名单
     * @param bid
     * @param uid
     */
    void addbreakuser(@Param("bid") Long bid, @Param("uid") Long uid);

    /**
     * 获取访问用户信息
     * @param vistorIds
     * @return
     */
    List<UserInfo> selectByVistor(Long[] vistorIds);

    /**
     * 获取用户其他信息
     * @param id 用户id
     * @return
     */
    UserMessage getUserMessage(Long id);

    Long selectgold(Long id);

    /**
     * 购买道具后金币减少
     * @param uid
     * @param price
     */
    void subgold(@Param("uid") Long uid, @Param("price") Long price);
}